home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-04-24 | 2.0 KB | 52 lines |
- 900 DEFINT A-Z:DIM PTAB$(1000),LTAB(1000):TRUE=(1=1):FALSE=NOT TRUE:PTMAX=-1:CLS
- 905 INPUT "Enter input filename: ",INFILE$:INPUT "Enter output filename: ",OUTFILE$
- 907 INPUT "Enter listing filename: ",LSTFILE$:FOR PASS=1 TO 2
- 910 PRINT "Beginning pass ";PASS;" ";TIME$:FILENO=2:OPEN INFILE$ FOR INPUT AS #FILENO
- 915 IF PASS=1 THEN OPEN LSTFILE$ FOR OUTPUT AS #1 ELSE OPEN OUTFILE$ FOR OUTPUT AS #1
- 1002 LNBR=1000:LINC=1:OU$=""
- 1003 GOSUB 1009:IF STMT$="" THEN 1008
- 1004 IF (LEN(OU$)+LEN(STMT$)>200) OR FORCENEW THEN GOSUB 1046:OU$=""
- 1005 IF OU$<>"" THEN OU$=OU$+":"
- 1006 OU$=OU$+STMT$:IF FOUNDIF THEN FORCENEW=TRUE:FOUNDIF=FALSE
- 1007 GOTO 1003
- 1008 GOSUB 1046:CLOSE #1:CLOSE #FILENO:NEXT PASS:BEEP:PRINT "End of run ";TIME$:BEEP:END
- 1009 STMT$="":NEWLAB=FALSE
- 1010 IF EOF(FILENO) THEN 1026
- 1011 LINE INPUT #FILENO,IN$:IF PASS=1 THEN PRINT #1,IN$
- 1012 INMAX=LEN(IN$):IF INMAX<1 THEN 1010
- 1013 W$=LEFT$(IN$,1):INIX=1:IF W$="*" THEN 1010
- 1014 IF W$="@" THEN GOSUB 1028
- 1015 GOSUB 1035:IF WORD$="COPY" THEN 1024 ELSE 1017
- 1016 GOSUB 1035
- 1017 IF LEFT$(WORD$,1)="@" THEN GOSUB 1030
- 1018 IF STMT$<>"" AND WORD$<>"" AND RIGHT$(STMT$,1)<>":" AND WORD$<>":" THEN STMT$=STMT$+" "
- 1019 STMT$=STMT$+WORD$:IF WORD$="IF" THEN FOUNDIF=TRUE
- 1020 IF WORD$<>"" THEN 1016
- 1021 IF INIX<=INMAX THEN IF W$="~" THEN 1010
- 1022 IF STMT$="" THEN 1010
- 1023 RETURN
- 1024 GOSUB 1035:FILENO=FILENO+1:ON ERROR GOTO 1025:OPEN WORD$ FOR INPUT AS #FILENO:ON ERROR GOTO 0:PRINT "Now copying ";WORD$:GOTO 1010
- 1025 ON ERROR GOTO 0:BEEP:PRINT "File ";INFILE$;" not found; ignored":FILENO=FILENO-1:GOTO 1010
- 1026 IF FILENO=2 THEN 1023
- 1027 CLOSE #FILENO:FILENO=FILENO-1:GOTO 1010
- 1028 FORCENEW=TRUE:GOSUB 1035:IF PASS=2 THEN RETURN
- 1029 PTMAX=PTMAX+1:PTAB$(PTMAX)=WORD$:LTAB(PTMAX)=LNBR+LINC:RETURN
- 1030 IF PASS=1 THEN WORD$="9999":RETURN
- 1031 PTIX=0
- 1032 IF PTIX>PTMAX THEN BEEP:PRINT "Unresolved label: ";WORD$:WORD$="9999":RETURN
- 1033 IF PTAB$(PTIX)=WORD$ THEN WORD$=RIGHT$(STR$(LTAB(PTIX)),4):RETURN
- 1034 PTIX=PTIX+1:GOTO 1032
- 1035 WORD$="":QUOTE=FALSE
- 1036 IF INIX>INMAX THEN RETURN
- 1037 IF MID$(IN$,INIX,1)=" " THEN INIX=INIX+1:GOTO 1036
- 1038 W$=MID$(IN$,INIX,1):IF QUOTE THEN 1042
- 1039 IF W$=":" THEN IF WORD$="" THEN WORD$=W$:INIX=INIX+1:RETURN
- 1040 IF W$=":" OR W$="'" OR W$=" " OR W$="~" THEN RETURN
- 1041 IF W$<" " OR W$>"z" THEN 1044
- 1042 IF W$=CHR$(34) THEN QUOTE=TRUE-QUOTE
- 1043 WORD$=WORD$+W$
- 1044 INIX=INIX+1:IF INIX<=INMAX THEN 1038
- 1045 RETURN
- 1046 IF PASS=2 AND OU$<>"" THEN PRINT #1,RIGHT$(STR$(LNBR),4);" ";OU$
- 1047 LNBR=LNBR+LINC:FORCENEW=FALSE:RETURN
-